Computer text editing systems are composed of different kinds of modules/subsystems. Backing store subsystems handle the storing of text and text properties. Other subsystems handle other tasks such as user interaction, display, and serialization. Conventional text editing systems tightly integrate the backing store subsystem. Consequently, conventional systems do not incorporate a virtual interface over the backing store. This makes it difficult for conventional text editing subsystems to allow fine grained reuse of their subsystems.